//package jw.hosptial.hosp.service.impl;
//
//import com.alibaba.fastjson.JSONObject;
//import jw.hosptial.hosp.service.DepartmentService;
//import jw.hosptial.model.hosp.Department;
//import jw.hosptial.vo.hosp.DepartmentQueryVo;
//import jw.hosptial.vo.hosp.DepartmentVo;
//import org.springframework.beans.BeanUtils;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.data.domain.*;
//import org.springframework.stereotype.Service;
//
//import java.util.ArrayList;
//import java.util.Date;
//import java.util.List;
//import java.util.Map;
//import java.util.stream.Collectors;
//
//@Service
//public class DepartmentServiceImpl implements DepartmentService {
//    @Autowired
//    private DepartmentRepository departmentRepository;
//
//    //上传科室接口
//    @Override
//    public void save(Map<String, Object> paramMap) {
//        //paramMap 转换department对象
//        String paramMapString = JSONObject.toJSONString(paramMap);
//        Department department = JSONObject.parseObject(paramMapString,Department.class);
//
//        //根据医院编号 和 科室编号查询
//        Department departmentExist = departmentRepository.
//                getDepartmentByHoscodeAndDepcode(department.getHoscode(),department.getDepcode());
//        //判断
//        if(departmentExist!=null) {
//            departmentExist.setUpdateTime(new Date());
//            departmentExist.setIsDeleted(0);
//            departmentRepository.save(departmentExist);
//        } else {
//            department.setCreateTime(new Date());
//            department.setUpdateTime(new Date());
//            department.setIsDeleted(0);
//            departmentRepository.save(department);
//        }
//    }
//
//    @Override
//    public Page<Department> findPageDepartment(int page, int limit, DepartmentQueryVo departmentQueryVo) {
//        // 创建Pageable对象，设置当前页和每页记录数
//        //0是第一页
//        Pageable pageable = PageRequest.of(page-1,limit);
//        // 创建Example对象
//        Department department = new Department();
//        BeanUtils.copyProperties(departmentQueryVo,department);
//        department.setIsDeleted(0);
//
//        ExampleMatcher matcher = ExampleMatcher.matching()
//            .withStringMatcher(ExampleMatcher.StringMatcher.CONTAINING)
//            .withIgnoreCase(true);
//        Example<Department> example = Example.of(department,matcher);
//
//        Page<Department> all = departmentRepository.findAll(example, pageable);
//        return all;
//    }
//
//    //删除科室接口
//    @Override
//    public void remove(String hoscode, String depcode) {
//        //根据医院编号 和 科室编号查询
//        Department department = departmentRepository.getDepartmentByHoscodeAndDepcode(hoscode, depcode);
//        if(department != null) {
//            //调用方法删除
//            departmentRepository.deleteById(department.getId());
//        }
//    }
//
//    //根据医院编号，查询医院所有科室列表
//    @Override
//    public List<DepartmentVo> findDeptTree(String hoscode) {
//        //创建list集合，用于最终数据封装
//        List<DepartmentVo> result = new ArrayList<>();
//
//        //根据医院编号，查询医院所有科室信息
//        Department departmentQuery = new Department();
//        departmentQuery.setHoscode(hoscode);
//        Example example = Example.of(departmentQuery);
//        //所有科室列表 departmentList
//        List<Department> departmentList = departmentRepository.findAll(example);
//
//        //根据大科室编号  bigcode 分组，获取每个大科室里面下级子科室
//        Map<String, List<Department>> deparmentMap =
//                departmentList.stream().collect(Collectors.groupingBy(Department::getBigcode));
//        //遍历map集合 deparmentMap
//        for(Map.Entry<String,List<Department>> entry : deparmentMap.entrySet()) {
//            //大科室编号
//            String bigcode = entry.getKey();
//            //大科室编号对应的全局数据
//            List<Department> deparment1List = entry.getValue();
//            //封装大科室
//            DepartmentVo departmentVo1 = new DepartmentVo();
//            departmentVo1.setDepcode(bigcode);
//            departmentVo1.setDepname(deparment1List.get(0).getBigname());
//
//            //封装小科室
//            List<DepartmentVo> children = new ArrayList<>();
//            for(Department department: deparment1List) {
//                DepartmentVo departmentVo2 =  new DepartmentVo();
//                departmentVo2.setDepcode(department.getDepcode());
//                departmentVo2.setDepname(department.getDepname());
//                //封装到list集合
//                children.add(departmentVo2);
//            }
//            //把小科室list集合放到大科室children里面
//            departmentVo1.setChildren(children);
//            //放到最终result里面
//            result.add(departmentVo1);
//        }
//        //返回
//        return result;
//    }
//
//    //根据科室编号，和医院编号，查询科室名称
//    @Override
//    public String getDepName(String hoscode, String depcode) {
//        Department department = departmentRepository.getDepartmentByHoscodeAndDepcode(hoscode, depcode);
//        if(department != null) {
//            return department.getDepname();
//        }
//        return null;
//    }
//
//    @Override
//    public Department getDepartment(String hoscode, String depcode) {
//        return departmentRepository.getDepartmentByHoscodeAndDepcode(hoscode, depcode);
//    }
//
//}
